Jackson API হল একটি শক্তিশালী এবং বহুল ব্যবহৃত Java-based JSON library, যা JSON ডেটা প্রক্রিয়াকরণের জন্য ডেভেলপারদের সাহায্য করে। এটি JSON ডেটাকে Java Objects এ রূপান্তর (deserialization), এবং Java Objects কে JSON ডেটায় রূপান্তর (serialization) করতে ব্যবহৃত হয়। এটি সহজ, দ্রুত এবং কাস্টমাইজেবল JSON প্রক্রিয়াকরণ সক্ষম করে।
Jackson API-এর মূল বৈশিষ্ট্য
- Serialization এবং Deserialization:
- JSON থেকে Java Object এ (deserialization) এবং Java Object থেকে JSON এ (serialization) রূপান্তর।
- High Performance:
- দ্রুত ডেটা প্রক্রিয়াকরণের জন্য প্রায়শই ব্যবহার করা হয়।
- Annotations Support:
@JsonProperty,@JsonIgnore,@JsonFormat,@JsonCreatorএর মতো অনেক অ্যানোটেশন প্রদান করে যা serialization এবং deserialization নিয়ন্ত্রণ করে।
- Streaming API Support:
- বড় JSON ডেটা স্ট্রিম আকারে প্রক্রিয়া করার ক্ষমতা।
- Tree Model Support:
- JSON ডেটাকে
JsonNodeএর মতো tree structure হিসেবে প্রক্রিয়া করা।
- JSON ডেটাকে
- Custom Modules:
Jackson-এর মাধ্যমে বিভিন্ন কাস্টম ডেটা টাইপের জন্য মডিউল যোগ করা যায়, যেমন Hibernate, Joda-Time, Java 8 Date/Time।
Jackson API-এর প্রধান মডিউলসমূহ
- jackson-core:
- JSON ডেটা স্ট্রিম প্রসেসিংয়ের জন্য।
- Contains
JsonParserএবংJsonGenerator।
- jackson-databind:
- Java Object থেকে JSON এবং JSON থেকে Java Object-এ রূপান্তরের জন্য।
- Contains
ObjectMapperক্লাস।
- jackson-annotations:
- Jackson এর অ্যানোটেশন প্রদান করে যা serialization/deserialization নিয়ন্ত্রণ করে।
- jackson-modules:
- বিশেষ মডিউল যেমন Hibernate, Joda-Time, এবং Java 8 Date/Time সাপোর্ট।
Jackson API-এর মূল উপাদানসমূহ
1. ObjectMapper
- Jackson এর প্রধান ক্লাস যা serialization এবং deserialization পরিচালনা করে।
Serialization Example (Object to JSON)
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// Create a simple Java object
Person person = new Person("John Doe", 30);
// Serialize object to JSON
String json = mapper.writeValueAsString(person);
System.out.println(json);
}
}
class Person {
private String name;
private int age;
// Constructor
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters and setters
}
Output:
{"name":"John Doe","age":30}
2. JsonNode
- Tree Model ব্যবহার করে JSON ডেটার সাথে কাজ করতে।
Example (Tree Model):
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class TreeModelExample {
public static void main(String[] args) throws Exception {
String json = "{\"name\":\"John\", \"age\":30}";
ObjectMapper mapper = new ObjectMapper();
// Read JSON as Tree Model
JsonNode node = mapper.readTree(json);
// Access fields
String name = node.get("name").asText();
int age = node.get("age").asInt();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
Output:
Name: John
Age: 30
3. Streaming API
- বড় JSON ডেটার জন্য JsonParser এবং JsonGenerator ব্যবহার করা হয়।
Example (JsonParser):
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import java.io.StringReader;
public class StreamingExample {
public static void main(String[] args) throws Exception {
String json = "{\"name\":\"John\", \"age\":30}";
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(new StringReader(json));
while (!parser.isClosed()) {
JsonToken token = parser.nextToken();
if (token == JsonToken.FIELD_NAME) {
System.out.println(parser.getCurrentName());
}
}
}
}
Output:
name
age
Jackson এর প্রধান অ্যানোটেশনসমূহ
1. @JsonProperty
- ফিল্ডের কাস্টম নাম নির্ধারণের জন্য।
import com.fasterxml.jackson.annotation.JsonProperty;
public class Person {
@JsonProperty("full_name")
private String name;
private int age;
// Constructor, Getters, Setters
}
2. @JsonIgnore
- নির্দিষ্ট ফিল্ড serialization থেকে বাদ দিতে।
import com.fasterxml.jackson.annotation.JsonIgnore;
public class Person {
private String name;
@JsonIgnore
private int age;
// Constructor, Getters, Setters
}
3. @JsonFormat
- Date/Time ফরম্যাট নির্ধারণের জন্য।
import com.fasterxml.jackson.annotation.JsonFormat;
public class Event {
@JsonFormat(pattern = "dd-MM-yyyy HH:mm")
private Date eventDate;
// Constructor, Getters, Setters
}
4. @JsonCreator
- কাস্টম কন্সট্রাক্টর নির্ধারণের জন্য।
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Person {
private String name;
private int age;
@JsonCreator
public Person(@JsonProperty("name") String name, @JsonProperty("age") int age) {
this.name = name;
this.age = age;
}
}
ব্যবহার ক্ষেত্র
- REST APIs: JSON ডেটা serialize এবং deserialize করতে।
- Microservices Communication: JSON ডেটা প্রক্রিয়াকরণের জন্য।
- Configuration Management: JSON ফাইল থেকে কনফিগারেশন লোড করতে।
- Data Processing Pipelines: বড় JSON ডেটা স্ট্রিম প্রক্রিয়াকরণের জন্য।
Jackson API একটি নির্ভরযোগ্য এবং সহজ টুল যা JSON ডেটার সাথে কাজ করার সময় খুবই কার্যকর। এটি serialization, deserialization, এবং customization এর জন্য বিভিন্ন ফিচার প্রদান করে।
- সহজ অ্যানোটেশন ব্যবহার করে ডেটা প্রক্রিয়াকরণ সহজ করা যায়।
- বড় JSON ডেটা ম্যানেজ করার জন্য এর Streaming API এবং Tree Model আদর্শ।
Jackson ব্যবহার করলে JSON ডেটার সাথে কাজ করা দ্রুত এবং কার্যকর হয়।
Read more